<?php
/**
 * Created by PhpStorm.
 * @description:
 * @time:
 * @Author: yfl
 * @QQ 554665488
 * Date: 2018-5-19
 * Time: 14:35
 */
//创建websocket服务器对象，监听0.0.0.0:9502端口

//webSocket 服务器是建立在http服务器之上的长连接服务器，客户端首先会发出一个http请求与服务器进行握手，握手成功后，会触发onOpen事件，表示已连接就绪，onOpen函数可以得到$request对象，包含了http
//握手的相关信息，get参数 COOKIE http头信息等


/**
 * 建立链接后客户端和服务器段就可以进行双向通信了
 * 1.客户端向服务器端发送信息的时候，服务器会触发onMessage事件回调
 * 2.服务器可以调用$server->push()方法像某一个客户端（使用$fd(int)标识）发送消息
 * 3.服务器端可以设置onHandShake 事件回调来手动处理WebSocket握手、
 *
 *
 *
 * 注意，不可以使用swoole_client客户端和webSocket服务器通信，因为协议不同 swoole_client 使用的是TCP 协议客户端
 * 必须实现Web_socket 协议才可以和web_socket 服务器通信。
 */
$ws = new swoole_websocket_server("0.0.0.0", 9504);

//监听WebSocket连接打开事件
$ws->on('open', function ($ws, $request) {
//    var_dump($request->fd, $request->get, $request->server);
//    $ws->push($request->fd, "hello, welcome==open\n");
});

//监听WebSocket消息事件
$ws->on('message', function ($ws, $frame) {
//    echo "Message: {$frame->data}\n";
//    $ws->push($frame->fd, "server: {$frame->data}");
});

//监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
    echo "client-{$fd} is closed\n";
});

$ws->start();